package cn.duli.xianer.dao;


import cn.duli.xianer.pojo.Orders;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface OrdersMapper {

    // 新增订单
    int save(Orders orders);

    // 根据订单表id查询订单详情
    Orders findById(@Param("oId") Integer oId);

    // 更新订单状态、添加支付时间和支付宝交易流水号（支付宝回调结束后会返回异步通知）
    int updateOrderStatusByoNo(@Param("parentNo") String parentNo, @Param("payTime") String payTime,
                               @Param("alipayNo") String alipayNo);

    // 根据订单号查询订单
    Orders findByOrderNum(@Param("orderNum") String orderNum);

    // 根据用户id查询订单列表
    Page<Orders> findOrdersByuId(@Param("uId") Integer uId);

    // 根据id删除此订单
    int deleteById(@Param("oId") Integer oId);

    //根据订单id去发货（更改订单状态为待收货），和更改发货时间
    int updateDeliverStatus(@Param("oId") Integer oId);

    // 根据订单id确认收货（更改订单状态为交易成功），和更改确认收货时间
    int updateConfirmOrder(@Param("oId") Integer oId);

    // 根据订单id关闭交易(订单状态为已取消)
    int updateOrderClose(@Param("oId") Integer oId);

    // 根据总订单编号查询相关订单列表
    List<Orders> findByParentNo(@Param("parentNo") String parentNo);

    // 根据商品Id查询订单
    Orders findByGoodId(@Param("gId") Integer gId);

    // 根据用户id分组查询待付款的订单列表
    List<Orders> findNotPad(@Param("uId") Integer uId);

    // 分页根据订单状态查询订单列表
    Page<Orders> findByStatusPage(@Param("status") String status, @Param("uId") Integer uId);

    // 根据订单状态查询订单列表
    List<Orders> findByOrderStatus();

    // 根据订单中商品的发布用户id查询订单列表（我卖出的订单列表）
    Page<Orders> findSellList(@Param("uId") Integer uId);

    // 分页根据订单中商品的发布用户id和订单状态查询订单列表（我卖出的）
    Page<Orders> findByStatusBySell(@Param("status") String status, @Param("uId") Integer uId);

    // 根据订单id修改订单状态
    int updateOrderStatus(@Param("oId") Integer oId, @Param("status") Integer status);

    // 查询所有订单
    Page<Orders> findAll();

    // 查询交易成功的订单列表
    List<Orders> findSuccess();

    // 根据商品id查询订单列表
    List<Orders> findOrdersByGid(@Param("gId") Integer gId,@Param("uid")Integer uid);

    // 根据当前登录用户id查找此用户购买的订单商品列表
    List<Orders> findByCurrentUid(@Param("uId") Integer uId);

    // 根据用户id查询订单列表
    List<Orders> findByOthersUid(@Param("uId") Integer uId);

}